Centralized computer systems with multiple independent terminal systems for accessing the centralized computer systems were once the dominant computer system architecture. These centralized computer systems were initially very expensive mainframe or mini-computer systems that were shared by multiple computer users. Each of the computer system users accessed the centralized computer systems using a computer terminal system coupled to the centralized computer systems.
In the late 1970s and early 1980s, semiconductor microprocessors and memory devices allowed for the creation of inexpensive personal computer systems. Personal computer systems revolutionized the computing industry by allowing each individual computer user to have access to a full computer system without having to share the computer system with any other computer user. Each personal computer user could execute their own software applications, and any problems with the computer system would only affect that single personal computer system user.
Although personal computer systems have become the dominant form of computing in the modern world, there has been a resurgence of the centralized computer system model wherein multiple computer users access a single server system using modern terminal systems that include high-resolution graphics. An example of this centralized architecture is cloud computing. Cloud computing provides an abstraction between the computing resource and its underlying technical architecture (e.g., servers, storage, networks), enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction. Traditional cloud computing systems provide resources to a plurality of personal computers (i.e., “fat” clients) that are connected via a wide area network (WAN) to a server in the cloud. Cloud computing allows multiple users to easily share the same set of software applications.
In a conventional cloud computing implementation, all processing is done in the cloud while the user gets access with a lightweight client that has the smallest amount of processing. Bandwidth challenges may arise when a considerable number of video streams are managed on some of the clients. Each client will have one or more streams concurrently going back and forth between the client itself and the server in the cloud. The challenge is exacerbated when the clients aren't simply rendering multimedia but are also creating an uplink stream for example for videoconferencing purposes.
For example, assume H.264 HDTV streams use a relatively high level of compression of 2-3 Mbit/stream. A situation where 20 users are participating in the same videoconference, using their desktop computers, would create a 2 Mbit uplink stream for each user and potentially 2×20 Mbit/sec for the downstream to each user for a total aggregate of 840 Mbit/s. Even with techniques of broadcasting, in the given example the total aggregate bandwidth utilization would be 2×2×20 Mbit/s or 40+40 Mbit (up/down), a small number for a local area network (LAN) and significantly higher bandwidth consumption for a WAN. If the number of users concurrently using the HD videoconferencing application grows to 100, the total bandwidth on the WAN connected to the cloud sever would be 200+200 Mbit/s.